package com.co.notaweb.entities;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

/**
 * @author PC
 * @version 1.0
 * @created 13-nov-2011 12:14:24
 */
@Entity
@NamedQueries({ @NamedQuery(name = "Curso.allCursosByDocente", query = "SELECT DISTINCT c FROM Curso c INNER JOIN c.asignaciones a WHERE a.docente.id = :idDocente"),
	@NamedQuery(name = "Curso.consultarCursosPorColegio", query = "SELECT c FROM Curso c WHERE c.colegio.id = :idColegio")})
public class Curso {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private long id;

	private String nombre;

	@ManyToOne
	private Grado grado;

	@ManyToOne
	private Seccion seccion;

	@ManyToOne
	private Colegio colegio;

	@OneToMany(mappedBy = "curso")
	private List<Estudiante> estudiantes;

	@OneToMany(mappedBy = "curso")
	private List<Asignacion> asignaciones;

	public Curso() {

	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Grado getGrado() {
		return grado;
	}

	public void setGrado(Grado grado) {
		this.grado = grado;
	}

	public Seccion getSeccion() {
		return seccion;
	}

	public void setSeccion(Seccion seccion) {
		this.seccion = seccion;
	}

	public Colegio getColegio() {
		return colegio;
	}

	public void setColegio(Colegio colegio) {
		this.colegio = colegio;
	}

	public List<Estudiante> getEstudiantes() {
		return estudiantes;
	}

	public void setEstudiantes(List<Estudiante> estudiantes) {
		this.estudiantes = estudiantes;
	}

	public List<Asignacion> getAsignaciones() {
		return asignaciones;
	}

	public void setAsignaciones(List<Asignacion> asignaciones) {
		this.asignaciones = asignaciones;
	}

}
